The present invention relates generally to displays and graphical user interfaces for computer systems. More particularly, the present invention relates to systems and methods for drawing objects on displays and in graphical user interfaces.
The evolution of the computer industry is unparalleled in its rate of growth and complexity. Personal computers, for example, which began as little more than calculators with limited memory, tape-driven input and monochrome displays are now able to tackle almost any data processing task. While this meteoric increase in power was almost sufficient to satisfy the demand of application programmers and end users alike, the corresponding increase in complexity created an ease-of-use problem which the industry was somewhat slower in solving. Thus, designers were faced with a new challenge: to harness this computing power in a form usable even by those with relatively little computer training to smooth the transition of other industries into a computer-based information paradigm.
As a result, in the early to mid-1980's many new I/O philosophies, such as "user friendly", "WYSIWYG" and "menu driven" came to the forefront of the industry. These concepts are particularly applicable to microcomputers, also known as personal computers, which are intended to appeal to a broad audience of computer users, including those who previously feared and mistrusted computers. An important aspect of computers which employ these concepts was, and continues to be, the interface which allows the user to input commands and data and receive results, which is commonly referred to as a graphical user interface (GUI).
One type of GUI is based on a visual metaphor which uses a monitor screen as a work surface called a "desktop" where documents are presented in relocatable regions termed "windows". The user interacts with the computer by, for example, moving objects on the desktop, choosing commands from menus, and manipulating window controls, such as checkboxes and scroll bars. An exemplary desktop screen is reproduced as FIG. 1.
The success of this type of interface is evident from the number of companies which have emulated the desktop environment. Even successful concepts, however, must continually be improved in order to keep pace with the rapid growth in this industry. The advent of multimedia, especially CD-ROM devices, has provided vast quantities of secondary storage which have been used to provide video capabilities, e.g., live animation and video clips, as regular components of application displays. With these new resources at their disposal, application designers, and others, desire more and more control over the appearance and behavior of the GUI, including the desktop environment and, in particular, objects on the desktop.
Described in the above identified related patent applications, are techniques for creating different themes for the desktop environment. More specifically, these themes provide coordinated sets of appearance and behavior attributes for objects drawn on the desktop. Users can change themes by, for example, making a menu selection in an appearance control menu. The appearance management system responds by drawing objects using the stored representations of those objects associated with the selected theme. Exemplary themes which can be created using these techniques are shown in FIGS. 2B and 2C for the conventional user interface appearance illustrated in FIG. 2A.
One aspect of drawing objects on graphical user interfaces relates to the creation of objects, e.g., push buttons, which give the user a visual impression that the object has height relative to a "surface" of the desktop. These types of objects have historically been created by drawing concentric rings or rectangles having predetermined shadings designed to provide such an impression. An example of this conventional technique is found in U.S. Pat. No. 5,452,406 to Butler et al. Typically, these types of objects have been drawn on a display using hard-coded techniques, i.e, by providing program code to draw each concentric ring or rectangle on a line-by-line basis at the predetermined color or luminance desired to visually convey the sense of height desired for the object. As a simplified example, such program code might follow the pattern of:
______________________________________ Calculate Rect (Top, Left, Bottom, Right); Set Pen Color = Black; Move to (Left, Bottom -1); Draw Line to (Left, Top +1); Move to (Left + 1, Top); Draw Line to (Right -1, Top); . . . etc. ______________________________________
One significant drawback of such hard coded techniques is their lack of flexibility, particularly when implementing an interface in which the user is able to switch between different themes. For example, a first theme might specify that a certain push button is drawn in a rectangular shape at a particular size, while a second theme might specify that same button as rounded and having a smaller size. Using conventional hard-coded techniques, new program code would typically be needed for each push button. Developing new code for each theme object would probably add significantly to the complexity and cost of developing and implementing new themes.